package com.dlg.user.rpc.api.user;

import com.dlg.commons.enums.UserType;
import com.dlg.user.domain.user.OjUserEnterpriseAttribute;
import com.dlg.user.domain.user.OjUserPersonalAttribute;
import com.dlg.user.rpc.api.vo.user.*;

import java.math.BigInteger;

/**
 * 用户相关rpc服务
 * @since 2017年3月30日 上午9:33:06
 *
 */
public interface IUserRpcService {
	/**
	 * 用户注册
	 * @param userRpcRegVo
	 * @param userType
	 * @return
	 */
	BigInteger register(UserRegisterRpcVo userRpcRegVo, String userType);

	/**
	 * 添加企业用户信息
	 * @param enterpriseAttribute
	 * @return
	 */
	BigInteger addEnterpriseUser(OjUserEnterpriseAttribute enterpriseAttribute);

	/**
	 * 添加个人用户信息
	 * @param ojUserPersonalAttribute
	 * @return
	 */
	BigInteger addPersonalUser(OjUserPersonalAttribute ojUserPersonalAttribute);

	/**
	 * 查询用户详情
	 * @param phone
	 * @param userType
	 * @return
	 */
	UserRpcVo queryUserDetail(String phone, UserType userType);

	/**
	 * 根据用户id更新个人用户信息
	 * @param personalUserRpcVo
	 * @param phone
	 * @param userType
	 * @return
	 */
	void updatePersonalUserByUserId(PersonalUserAttributeRpcVo personalUserRpcVo, String phone, String userType);

	/**
	 * 查询任务数量
	 * @param userId
	 * @return
	 */
    Integer getJobCountByUserId(BigInteger userId);

	/**
	 * 添加企业代理商
	 * @param enterpriseAgentRpcVo
	 * @param phone
	 * @param userType
	 * @return
	 */
	BigInteger addEnterpriseAgent(EnterpriseAgentAttributeRpcVo enterpriseAgentRpcVo, String phone, String userType);

	/**
	 * 根据用户id更新企业用户信息
	 * @param enterpriseUserAttributeRpcVo
	 * @param phone
	 * @param userType
	 * @return
	 */
    void updateEnterpriseUserByUserId(EnterpriseUserAttributeRpcVo enterpriseUserAttributeRpcVo, String phone, String userType);

	/**
	 * 根据用户id更新企业代理商用户信息
	 * @param enterpriseAgentAttributeRpcVo
	 * @param phone
	 * @param userType
	 * @return
	 */
    void updateEnterpriseAgentByUserId(EnterpriseAgentAttributeRpcVo enterpriseAgentAttributeRpcVo, String phone, String userType);

	/**
	 * 修改用戶信息
	 * @param userRpcVo
	 * @param phone
	 * @param userType
	 */
	void updateUserById(UserRpcVo userRpcVo, String phone, String userType);

	/**
	 * 修改用户密码
	 * @param phone
	 * @param userType
	 * @param newPassword
	 * @param oldPassword
	 */
    void updateUserPassword(String phone, String userType, String newPassword, String oldPassword);

}